package com.xinchuang.service.targetSystem;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xinchuang.common.Result;
import com.xinchuang.common.ResultUtil;
import com.xinchuang.vo.SystemsDynamicVo;
import com.xinchuang.vo.SystemsIndexPowerVo;
import com.xinchuang.vo.SystemsRangeVo;
import com.xinchuang.vo.SystemsTargetListVo;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * TODO
 *
 * @author zkwczx
 * @version 1.0
 * @date 2024/3/7 16:21
 */
public interface SystemElseService {

    /**
     * 查询目标类型列表
     * @param set
     * @return
     */
    List<Map<String, Object>> selectTargetTypeList(Set set);

    /**
     * 查询类型下目标列表
     * @param typeId
     * @param country
     * @param set
     * @return
     */
    List<Map<String, Object>> selectTypeTargetList(String typeId, String keyword, String country, Set set);

    /**
     * 移动目标
     * @param typeList
     * @param typeRedis
     * @param targetList
     * @param targetRedis
     */
    void moveTarget(List<String> typeList, String typeRedis, List<String> targetList, String targetRedis, String onTargetRedis);

    /**
     * 移除目标
     * @param onTargetRedis
     * @param typeRedis
     * @param targetList
     * @param targetRedis
     */
    void pushTarget(String typeRedis, List<String> targetList, String targetRedis, String onTargetRedis);

    /**
     * 查询已选目标列表
     * @param typeKey
     * @param onKey
     * @return
     */
    List<Map<String, Object>> selectTargetList(String typeKey, String onKey);

    /**
     * 查询体系树
     * @param sysId
     * @return
     */
    Map<String, Object> selectSystemTree(String sysId, String name);

    /**
     * 作用范围相关操作
     * @param systemsRangeVo
     * @return
     */
    Result systemRangeDeo(SystemsRangeVo systemsRangeVo);

    /**
     * 计算查询体系构建中目标作用范围
     * @param systemsRangeVo
     * @return
     */
    Result addSystemsTargetActionRange(SystemsRangeVo systemsRangeVo);

    /**
     * 获取体系目标清单
     * @param sysId
     * @return
     */
    List<Map<String, Object>> getSystemsTargetIndexList(String sysId);

    /**
     * 排序
     * @param sysId
     * @param targetId
     * @param type
     * @return
     */
    Result upOrDown(String sysId, String targetId, int type);

    /**
     * 查询体系类型指标
     * @param sysId
     * @return
     */
    Map<String, Object> getSystemsTypeIndex(String sysId);

    /**
     * 新增修改作用范围类型
     * @param json
     * @return
     */
    Result addRangeType(JSONObject json);

    /**
     * 删除作用范围类型
     * @param json
     * @return
     */
    Result deleteRangeType(JSONObject json);

    /**
     * 查询作用范围类型
     * @param json
     * @return
     */
    Result selectRangeType(JSONObject json);

    /**
     *@author zhangxuan
     *@Description TODO
     *@Date 10:55 2024/5/14
     *@Param [sysId]
     *@return com.xinchuang.common.Result
     **/
    Result selectSystemsAnalysisData(String sysId);

    /**
     * 体系分析能力下拉
     * @param sysId
     * @return
     */
    Result selectSystemsPowerPull(String sysId);

    /**
     *@author zhangxuan
     *@Description TODO 体系分析重置
     *@Date 11:56 2024/5/14
     *@Param [sysId]
     *@return com.xinchuang.common.Result
     **/
    Result restartSystemsAnalysis(String sysId);

    /**
     * 查询MB列表
     * @param powerVo
     * @return
     */
    Result selectAysMBList(SystemsIndexPowerVo powerVo);

    /**
     * MB列表排序
     * @param json
     * @return
     */
    Result aysMBSort(JSONObject json);

    /**
     * MB列表排序
     * @param json
     * @return
     */
    Result aysMBDelete(JSONObject json);

    /**
     * 移动目标清单
     * @param json
     * @return
     */
    Result aysMBMove(JSONObject json);

    /**
     * 查询目标清单
     * @param json
     * @return
     */
    Result aysMBChooseList(JSONObject json);

    /**
     * 目标清单排序
     * @param json
     * @return
     */
    Result aysMBChooseSort(JSONObject json);

    /**
     * 目标清单目标删除
     * @param json
     * @return
     */
    Result aysMBChooseDelete(JSONObject json);

    /**
     *@author zhangxuan
     *@Description TODO 体系打击分析结果
     *@Date 9:24 2024/5/14
     *@Param [sysId]
     *@return com.xinchuang.common.Result
     **/
    Result hitAnalysis(String sysId);

    /**
     *@author zhangxuan
     *@Description TODO 保存体系分析目标清单
     *@Date 15:37 2024/5/14
     *@Param [systemsTargetListVo]
     *@return com.xinchuang.common.Result
     **/
    Result saveAnalysis(SystemsTargetListVo systemsTargetListVo);

    /**
     *@author zhangxuan
     *@Description TODO 查询场景列表
     *@Date 10:57 2024/5/15
     *@Param []
     *@return com.xinchuang.common.Result
     **/
    Result selectSceneList();

    /**
     *@author zhangxuan
     *@Description TODO 查询场景数据
     *@Date 11:33 2024/5/15
     *@Param [sceneId]
     *@return com.xinchuang.common.Result
     **/
    Result selectSceneData(String sceneId);

    /**
     *@author zhangxuan
     *@Description TODO 编辑目标
     *@Date 15:12 2024/5/15
     *@Param [json]
     *@return com.xinchuang.common.Result
     **/
    Result updateSceneTarget(JSONObject json);

    /**
     *@author zhangxuan
     *@Description TODO 删除目标
     *@Date 15:12 2024/5/15
     *@Param [json]
     *@return com.xinchuang.common.Result
     **/
    Result deleteSceneTarget(JSONObject json);

    /**
     *@author zhangxuan
     *@Description TODO 子目标下拉
     *@Date 15:12 2024/5/15
     *@Param [json]
     *@return com.xinchuang.common.Result
     **/
    Result selectSceneSubPull(String targetId);

    /**
     *@author zhangxuan
     *@Description TODO 编辑子目标
     *@Date 15:13 2024/5/15
     *@Param [json]
     *@return com.xinchuang.common.Result
     **/
    Result addSceneSub(JSONObject json);

    /**
     *@author zhangxuan
     *@Description TODO 删除子目标
     *@Date 15:13 2024/5/15
     *@Param [json]
     *@return com.xinchuang.common.Result
     **/
    Result deleteSceneSub(JSONObject json);

    /**
     *@author zhangxuan
     *@Description TODO 保存能力清单
     *@Date 15:34 2024/5/15
     *@Param []
     *@return com.xinchuang.common.Result
     **/
    Result saveIndexList(JSONObject json);

    /**
     *@author zhangxuan
     *@Description TODO 弹型拉下
     *@Date 16:25 2024/5/15
     *@Param []
     *@return com.xinchuang.common.Result
     **/
    Result missilePull();

    /**
     *@author zhangxuan
     *@Description TODO 作战部下拉
     *@Date 16:26 2024/5/15
     *@Param [json]
     *@return com.xinchuang.common.Result
     **/
    Result payloadPull(String missileId);

    /**
     *@author zhangxuan
     *@Description TODO 导出Excel文档
     *@Date 17:15 2024/5/15
     *@Param [sceneId]
     *@return com.xinchuang.common.Result
     **/
    Result exportExcel(String sceneId);

    /**
     * 获取必打设施
     * @return
     */
    Result getHitTarget();

    /**
     * 体系分析目标静态分析
     * @param sysId
     * @return
     */
    Result getSystemsTargetStaticAnalyse(String sysId);

    /**
     * 体系分析规律分析停驻列表
     * @param sysId
     * @return
     */
    Result getSystemsRulePostureList(String sysId, Integer type);

    /**
     * 体系分析规律分析
     * @param systemsDynamicVo
     * @return
     */
    Result getSystemsRuleAnalyse(SystemsDynamicVo systemsDynamicVo);

    /**
     * 体系分析动态分析
     * @param systemsDynamicVo
     * @return
     */
    Result getSystemsActiveAnalyse(SystemsDynamicVo systemsDynamicVo);

    /**
     * 体系分析意图分析
     * @param systemsDynamicVo
     * @return
     */
    Result getIntentionAnalyse(SystemsDynamicVo systemsDynamicVo);

    /**
     * 体系分析关联分析
     * @param systemsDynamicVo
     * @return
     */
    Result getRelationAnalyse(SystemsDynamicVo systemsDynamicVo);

    /**
     * 体系分析整体分析
     * @param systemsDynamicVo
     * @return
     */
    Result getOverallAnalyse(SystemsDynamicVo systemsDynamicVo);

}
